Лабораторная работа №5. Сценарий 6: Захват сервера базы данных
Оширова Юлия Николаевна
Российский университет дружбы народов, Москва, Россия
На первом этапе выполнения лабораторной работы был проведён разведывательный анализ целевой сети. Для этого использовался инструмент nmap с флагами -sV (определение версии служб) и -sC (запуск стандартных скриптов). В результате сканирования было установлено, что на хосте 195.239.174.25 открыт порт 80/tcp, на котором работает веб-сервер Apache/2.4.29 (Ubuntu). Это указывает на наличие веб-портала, который может быть целью для дальнейшей атаки.
Для удобства работы с сайтом была добавлена статическая запись в файл /etc/hosts, связывающая IP-адрес 195.239.174.25 с доменным именем portal.ampire.corp.
Для обнаружения активных хостов во внутренней сети был запущен модуль post/multi/gather/ping_sweep, который выполнил ping-сканирование диапазона 10.10.10.0/24. В результате было обнаружено несколько активных хостов, включая 10.10.10.5, 10.10.10.10, 10.10.10.15, 10.10.10.20, 10.10.10.25, 10.10.10.30 и 10.10.10.35.
Для проведения детального анализа целевого сайта, работающего на CMS WordPress, в рамках фреймворка Metasploit был выполнен поиск подходящих модулей с помощью команды search wordpress scanner. В результате поиска был выбран модуль auxiliary/scanner/http/wordpress_scanner, который позволяет автоматически определять установленные плагины и темы на сайте.
Этот модуль был использован для сканирования сайта portal.ampire.corp с целью выявления уязвимых компонентов, которые могут быть использованы для последующей эксплуатации.
Перед началом атаки необходимо было настроить локальное окружение. Для этого в файл /etc/hosts была добавлена запись, связывающая IP-адрес 195.239.174.25 с доменным именем portal.ampire.corp. Это позволило обращаться к целевому сайту по удобному имени, а не по IP-адресу.
После настройки окружения был запущен фреймворк Metasploit с помощью команды msfconsole. В консоли Metasploit отобразилась информация о версии фреймворка (v6.4.69-dev) и количестве доступных модулей, включая эксплойты, aux-модули, полезные нагрузки и обходы защиты.
На данном этапе была проведена дополнительная разведка для обнаружения других сервисов в сети. Было выполнено сканирование нескольких IP-адресов с помощью команды nmap -sV -sC. В результате сканирования были обнаружены следующие сервисы
Обнаружены:
195.239.174.1: почтовый сервер Microsoft Exchange (порт 25) и Outlook (порт 443). 195.239.174.12: SSH (порт 22) и nginx (порт 443).
После успешного получения доступа к серверу, в сессии Meterpreter была выполнена команда getuid. Она показала, что текущий пользователь — www-data, что означает успешную эксплуатацию уязвимости и получение контроля над веб-сервером.
В Metasploit был найден эксплойт wp_wpdiscuz_unauthenticated_file_upload, который позволяет загружать файлы без аутентификации. Были заданы параметры: rhost (целевой хост portal.ampire.corp) и blogpath (путь к посту /index.php/2021/07/26/hello-world/). Также указан lhost — IP локальной машины для обратного соединения.
После запуска эксплойта (run) система сообщила об успешной загрузке полезной нагрузки и открытии сессии Meterpreter. Сессия №1 установлена между локальным IP 195.239.174.11 и целевым сервером 195.239.174.25. Это подтверждает, что уязвимость успешно эксплуатирована.
Внутри Meterpreter была выполнена команда arp, чтобы посмотреть ARP-таблицу. В ней видны IP-адреса из диапазона 10.10.10.0/24, что указывает на наличие внутренней сети организации. Это ключевой шаг для планирования дальнейшей атаки внутри периметра.
Был запущен модуль wordpress_scanner для детального анализа сайта. Он определил версию WordPress (5.8.2) и список установленных плагинов, включая wpdiscuz 7.0.2, duplicator 1.3.26 и elementor 3.11.0. Эти данные помогают выбрать вектор атаки — в данном случае был выбран wpdiscuz.
После настройки маршрутизации и SOCKS-прокси, был запущен nmap через proxychains, чтобы просканировать хост 10.10.10.30. Цель — найти открытые порты на внутреннем сервере. Сканирование прошло успешно, но в этом выводе нет информации о конкретных открытых портах.
В Meterpreter была выполнена команда bg (background), чтобы временно свернуть сессию. Затем был запущен модуль auxiliary/server/socks_proxy для создания локального прокси-сервера на 127.0.0.1:1080. Это позволяет перенаправлять сетевой трафик из Kali во внутреннюю сеть организации.
С помощью утилиты nc (netcat) и proxychains была проверена доступность порта 3306 на сервере 10.10.10.30. Вывод OK подтвердил, что порт открыт — это указывает на то, что на этом хосте работает сервер MySQL, который и является целью атаки.
Был выполнен запрос sessions, чтобы убедиться, что активная Meterpreter-сессия №1 всё ещё работает. Информация показывает, что сессия от пользователя www-data на хосте portal.ampire.corp установлена и активна — это гарантирует, что можно продолжать работу.
В терминале была выполнена команда ls, чтобы убедиться, что нужный скрипт mysql_brute.sh находится в директории /usr/tools/mysql_brute/. Его наличие необходимо для последующего запуска атаки перебором пароля на сервере MySQL.
В Meterpreter была выполнена команда upload, чтобы загрузить скрипт mysql_brute.sh с локальной машины Kali в директорию /tmp/ на скомпрометированном сервере. Это необходимо для запуска атаки перебором пароля прямо с целевого хоста.
После загрузки скрипта был загружен и файл со словарём rockyou.txt — стандартный список паролей для брутфорса. Оба файла (mysql_brute.sh и rockyou.txt) теперь находятся в /tmp/ на целевом сервере и готовы к использованию.
С помощью команд cd /tmp и ls была проверена успешность загрузки файлов. В выводе видны оба файла: mysql_brute.sh (размер 990 байт) и rockyou.txt (размер 139921521 байт). Это подтверждает, что все необходимые компоненты для атаки находятся на целевом хосте.
На экране отображаются результаты работы скрипта mysql_brute.sh. Скрипт последовательно пытается подключиться к MySQL, используя различные пароли из словаря rockyou.txt для пользователя user. Большинство попыток заканчиваются ошибкой “Ошибка подключения”, что означает неверный пароль.
В конце списка попыток появляется сообщение: «Успешное подключение к базе данных! user: wildflower». Это означает, что скрипт нашёл правильный пароль — wildflower. Теперь можно использовать эти учетные данные для подключения к серверу MySQL и получения флага.
После успешного подключения к серверу MySQL с помощью учетных данных user:wildflower, была выполнена команда show databases;. В результате отобразился список доступных баз данных, включая целевую базу Flag, которая содержит искомый флаг.
Была выбрана база данных Flag с помощью команды use Flag;. Затем выполнена команда show tables;, которая показала, что в этой базе находится одна таблица — lmt0j. Именно в этой таблице хранится флаг.
Из локальной Kali-машины было установлено соединение с сервером MySQL (10.10.10.30) с использованием proxychains для маршрутизации трафика через ранее созданную meterpreter-сессию. Учетные данные: user:wildflower.
На странице тренировки отображается, что задание «Захват сервера базы данных» успешно выполнено. Это подтверждает, что все шаги атаки были пройдены корректно, и флаг был получен.
В окне задания видна зелёная кнопка «Флаг успешно введен», что означает: флаг был найден в таблице lmt0j базы Flag, скопирован и отправлен в систему проверки. Задание полностью завершено.
В ходе выполнения лабораторной работы был успешно реализован сценарий захвата сервера базы данных в корпоративной сети. Атака началась с разведки целевого веб-сервера (portal.ampire.corp), на котором была обнаружена уязвимость в плагине WordPress wpDiscuz. С использованием эксплойта wp_wpdiscuz_unauthenticated_file_upload была получена meterpreter-сессия, что позволило проникнуть во внутреннюю сеть (10.10.10.0/24).
Далее, с помощью маршрутизации (autoroute) и SOCKS-прокси, был проведён скан внутренней сети, в результате которого был обнаружен сервер БД с открытым портом 3306 (MySQL). Используя скрипт mysql_brute.sh и словарь rockyou.txt, был подобран пароль для учётной записи user — wildflower.
После успешного подключения к MySQL был найден флаг в таблице lmt0j базы данных Flag, что подтвердило полное выполнение задачи.